# @Time : 2024-12-24 17:58
# @Author : Fioman 
# @Phone : 13149920693
"""
eap日志记录模块,使用模块去实现
"""
import logging
import os
import threading
from logging.handlers import TimedRotatingFileHandler

import app_config
from common.datetime_helper import get_date_only

# 使用全局变量表示_logger是否初始化
_lock = threading.Lock()
_isPrint = True  # 是否输出到控制台
_logger = None


def log_init():
    """
    初始化日志模块,返回一个logger对象
    :return:
    """
    global _logger
    if _logger is None:
        with _lock:
            _logger = logging.getLogger(__name__)
            _logger.setLevel(logging.DEBUG)
            logFile = (f"{os.path.join(app_config.prodDebugDir, get_date_only())}"
                       f"_{app_config.projectName}_log.txt")
            # 将日志输出到文件,并自动切割日志. when="midnight"表示切割时间间隔midnight午夜切割
            # 1表示每天切割一次,backupCount保留的日志文件数,其他切割 "S" 秒、"H" 小时、"D"
            handler = TimedRotatingFileHandler(logFile, when="midnight", interval=1,
                                               backupCount=app_config.overdueDays, encoding="UTF-8")
            handler.setLevel(logging.DEBUG)
            formatter = logging.Formatter("%(asctime)s - %(message)s")
            handler.setFormatter(formatter)
            _logger.addHandler(handler)
    return _logger


def debug_produce(info: str):
    """
    输出日志到文件和控制台
    @param info:
    @return:
    """
    logger = log_init()
    # 根据标志为是否输出到控制台
    if _isPrint:
        print(info)
    logger.debug(info)


if __name__ == '__main__':
    debug_produce("我是一只小小鸟")
